home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
amok_lha
/
amok17.lha
/
GetiT-Zeiger
/
GetiTZeiger.mod
< prev
next >
Wrap
Text File
|
1993-08-15
|
5KB
|
128 lines
MODULE GetiTZeiger;
(*---------------------------------------------------------------------------
:Programm. GetiTZeiger
:Version. 1.0
:Contents. Änderung der Workbenchfarben in die GetiT-Farben und zurück.
:Remark. Start über Icon-File und 'DEFAULT TOOL'.
:History. 1.01, 15-Jan-89 Müll entfernt, optimiert.
:Author. Jochen P. Kupfer
:Address. Buchenweg 22, D-4006 Erkrath 2
:Phone. 02104-40673
:Remark. SIGMA
:Date. 14-Jan-89
:Copyright. PD
:Language. Modula-2
:Compiler. M2Amiga v3.11d
---------------------------------------------------------------------------*)
(* Das Prg muß mit einem Icon von der Workbench zu starten.
Das Icon muß vom Typ 'Projekt' (wie z.B. bei Textfiles) sein.
Als 'DEFAULT TOOL' ist das eigentliche Programm 'GetiTZeiger'
einzutragen. Vorweg natürlich der richtige Pfad. Also z.B.
':GetiTZeiger' oder ':c/GetiTZeiger'. Heißt das Iconfile z.B.
'NeuPrefs.info', dann steht im zugehörigen File 'NeuPrefs' nur
'-n<RETURN>' (bzw. '-a<RETURN>', wenn auf die ursprünglichen
Farben zurück geschaltet werden soll). *)
FROM Intuition IMPORT Preferences, PreferencesPtr, pointerSize,
GetPrefs, SetPrefs;
FROM SYSTEM IMPORT ADR;
FROM Arts IMPORT TermProcedure, Assert;
FROM Arguments IMPORT GetArg, NumArgs;
FROM FileSystem IMPORT Lookup, File, ReadBytes, Close,
WriteBytes, Length, Response;
CONST
size0 = 3; (* Filelänge! *)
altname = "Sys:devs/system-configuration";
neuname = ":devs/system-configuration";
VAR
pp1,pp2 :PreferencesPtr;
len, i, arg :INTEGER;
buffer1,buffer2 :Preferences;
buffer :ARRAY[0..15] OF CHAR;
argument :ARRAY[0..30] OF CHAR;
name :ARRAY[0..50] OF CHAR;
file,f0 :File;
new :BOOLEAN;
size,actual :LONGINT;
PROCEDURE Cleanup; (* Falls das Prg aus irgendwelchen Gründen
abgebrochen wird, müssen die offenen
Files wieder geschlossen werden. *)
BEGIN
Close(file);
Close(f0);
END Cleanup;
BEGIN
TermProcedure(Cleanup);
pp1:=NIL;pp2:=NIL;actual:=0; (* Nur für alle Fälle... *)
new := FALSE;
size := SIZE(buffer1);
pp1 := PreferencesPtr(ADR(buffer1));
pp2 := PreferencesPtr(ADR(buffer2));
GetPrefs(pp1,size);arg:=1; (* Aktuelle Prefs holen. *)
IF (NumArgs()#0) THEN
GetArg(arg,argument,len); (* Tricky, tricky! Argument ist der Name(!)
des Files (=AltPrefs oder NeuPrefs).
Das eigentliche Argument (-a oder -n)
steckt im File selbst!!!!!
Das muß dann natürlich auch gelesen
und ausgewertet werden! *)
Lookup(f0,argument,size0,new); (* Datei zum Lesen/Schreiben öffnen. *)
Assert(f0.res=done,ADR("Icon-File nicht gefunden!"));
ReadBytes(f0,ADR(buffer),size0,actual);
IF buffer[0]="-" THEN (* Welcher Parameter? *)
IF buffer[1]="n" THEN name := neuname END;
IF buffer[1]="a" THEN name := altname END;
END;
Close(f0);
(* Nun such sys.config! *)
Lookup(file,name,size,new); (* sys.config zum Lesen öffnen. *)
Assert(file.res=done,ADR("Datenfile nicht gefunden!"));
(* Abbruch, falls Datenfile nicht greifbar. *)
Length(file,actual); (* Zur Kontrolle erst nachsehen, wie lang
das angegebene Datenfile tatsächlich ist! *)
actual:=actual-2; (* SIZE(Preferences) + 2(!) = actual *)
Assert(size=actual,ADR(" Falsches Datenfile gelesen! "));
(* Sicherheitsabfrage, da das Programm,
falls actual < size, auf die fehlenden
Bytes wartet ... und wartet ... und wartet! *)
ReadBytes(file,ADR(buffer2),size,actual); (* sys.config lesen... *)
Close(file); (* und schließen! *)
FOR i:=0 TO pointerSize-1 DO (* Zeiger umbauen. *)
pp1^.pointerMatrix[i] := pp2^.pointerMatrix[i];
END;
pp1^.xOffset := pp2^.xOffset; (* hot spot *)
pp1^.yOffset := pp2^.yOffset;
pp1^.color17 := pp2^.color17; (* Zeigerfarben *)
pp1^.color18 := pp2^.color18;
pp1^.color19 := pp2^.color19;
pp1^.color0 := pp2^.color0; (* Wb - Farben *)
pp1^.color1 := pp2^.color1;
pp1^.color2 := pp2^.color2;
pp1^.color3 := pp2^.color3;
SetPrefs(pp1,size,new);
END; (* IF *)
END GetiTZeiger.mod